package com.example.news.util;

import com.example.news.entity.User;
import org.springframework.stereotype.Component;

/**
 * 持有用户信息,用于代替session对象.  起到容器作用
 */
@Component
public class HostHolder {

    // ThreadLocal 为变量在每个线程中创建了一个副本，这样每个线程都可以访问自己内部的副本变量
    private ThreadLocal<User> users = new ThreadLocal<>();

    public void setUser(User user) {
        users.set(user);
    }

    public User getUser() {
        return users.get();
    }

    // 请求结束时清理ThreadLocal中的user
    public void clear() {
        users.remove();
    }

}
